import cloud from '@lafjs/cloud'
import QcloudSms from "qcloudsms_js";
let dbName = "web-users"
let code = "";//验证码
let mobile = "";//手机号
let query = {}
let userId  //用户id

export default async function (ctx: FunctionContext) {
  if (cloud.utils.isString(ctx.user.uid)) {
    userId = ctx.user.uid
  } else {
    userId = ctx.user.uid._id
  }


  mobile = ctx.body.mobile
  query = { ...ctx.body }

  // 短信应用 SDK AppID
  var appid = 1400919099;  // SDK AppID 以1400开头
  // 短信应用 SDK AppKey
  var appkey = "acd4e2e643ef8a2a08c09aec434e6eb3";
  // 需要发送短信的手机号码
  var phoneNumbers = [mobile];
  // 短信模板 ID，需要在短信控制台中申请
  var templateId = 2191339;  // NOTE: 这里的模板ID`7839`只是示例，真实的模板 ID 需要在短信控制台中申请
  // 签名
  var smsSign = "上海亚诚培训学校";  // NOTE: 签名参数使用的是`签名内容`，而不是`签名ID`。这里的签名"腾讯云"只是示例，真实的签名需要在短信控制台申请
  // 实例化 QcloudSms
  var qcloudsms = QcloudSms(appid, appkey);

  var ssender = qcloudsms.SmsSingleSender();

  // 生成验证码
  code = generateRandomCode();

  var params = [code];
  console.log("走到这里了吗验证码: ", code);
  ssender.sendWithParam("86", phoneNumbers[0], templateId,
    params, smsSign, "", "", callback);

  // 设置请求回调处理, 这里只是演示，用户需要自定义相应处理回调
  async function callback(err, res, resData) {
    if (err) {
      console.log("发送验证码err: ", err);
      return cloud.utils.requestReturn({ data: "", code: 500, msg: err })
    } else {
      //console.log("发送短信res: ", res.req);
      console.log("发送短信resData: ", resData);
      if (resData.result == 0) {
        await setUser()//设置用户信息
      } else {
        return cloud.utils.requestReturn({ data: "", code: 500, msg: resData.errmsg })
      }
    }
  }
  return cloud.utils.requestReturn({ data: "" })
}

function generateRandomCode() {
  let code = "";
  for (let i = 0; i < 4; i++) {
    code += Math.floor(Math.random() * 10); // 生成 0 到 9 之间的随机数字
  }
  return code;
}

//用户手机号和验证码和验证码有效时间
async function setUser() {
  let dataJson = {
    code, code_expire_time: Date.now() + (5 * 60 * 1000)
  }

  await cloud.nw.db.update({
    dbName,
    whereJson: { _id: userId },
    dataJson
  });
}
